#pragma once

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>

typedef int SListTypeData;

typedef struct SListNode
{
	SListTypeData data;
	struct SListNode* next;
}SListNode;

void SListPrint(SListNode* phead);
void SListPushBack(SListNode** phead, SListTypeData x);
void SListPushFront(SListNode** phead, SListTypeData x);
void SListPopBack(SListNode** phead);
void SListPopFront(SListNode** phead);

SListNode* SListFind(SListNode* phead, SListTypeData x);
void SListInsertFront(SListNode* phead, SListNode* pos, SListTypeData x);
void SListInsertBack(SListNode* phead, SListNode* pos, SListTypeData x);
void SListErase(SListNode** phead, SListNode* pos);
void SListEraseBack(SListNode** phead, SListNode* pos);

void SListDestory(SListNode** phead);